package com.baizhi.day02;

public class StudentDemo {
    //被static修饰的属性和方法就是静态属性和方法
    public static void main(String[] args) {
        //当前对象 st， this指的就是st
        Student st = new Student("纪云浩");
        System.out.println("st="+st);
        System.out.println(st.name);

        System.out.println("--------------------");

        //此时当前当前对象s2   this指的就是s2
        //Student 是一个引用数据类型， s2就是一个引用数据类型的变量，简称引用
        Student s2 = new Student("提灯老祖");
        System.out.println("s2="+s2);

    }
}

/**
 *表示一个学生类
 */
class Student{
    String name;
    char gender;
    int age;
    String address;

    //无参构造
    public Student(){}

    //含参构造
    //在Java中，当出现变量名一致的时候，采取就近原则
    //在Java中，所有的非静态属性和非静态方法，只能被对象来调用
    //在类 中使用this代替当前对象来调用属性和方法
    //this: 指的是当前对象，就是当前对象的引用，可以看成一个虚拟对象，是一个地址（当前对象地址，当前对象：谁调用构造方法谁就是当前对象）
    public Student(String name){
        //System.out.println("this="+this);
        this.name = name;

    }

    public Student(String name,char gender){
        this(name);
        this.gender = gender;
    }

    public Student(String name,char gender,int age){
        this(name,gender);
        this.age = age;
    }

    public Student(String name,char gender,int age,String address){
        // this语句
        //会自动的去调用奔雷中符合形式的构造方法
        //this(String,char,int)    Student(String,char,int)
        //this语句必须放在构造方法中第一行的位置
        this(name,gender,age);
        this.address = address;

    }
}
